/***************************************************************************
 创建者：华磊
 开始时间：         : 2020.12.17
 copyright            : (C) 深圳市华友高科有限公司
 修改说明：（每次有修改就添加一条，带有 修改人，修改时间，修改描述）

 ***************************************************************************
 *   输出指令属性编辑视窗
*                                                                         *
 ***************************************************************************/
#ifndef OUTPUTINSTRUCTIONVIEW_H
#define OUTPUTINSTRUCTIONVIEW_H

#include "outputinstructionview_global.h"
#include <QWidget>
#include <QTranslator>

class ProgramView;

namespace Ui {
class OutputInstructionView;
}

/**
 * @brief The EM_OUTPUT_TYPE enum　输出类型
 */
enum EM_OUTPUT_TYPE
{
    EM_OUTPUT_TYPE_SWITCH = 1,
    EM_OUTPUT_TYPE_PULSE = 2,
    EM_OUTPUT_TYPE_REGISTER = 3
};

/**
 * @brief The OutputInstructionView class　输出指令属性编辑视窗类
 */
class OUTPUTINSTRUCTIONVIEWSHARED_EXPORT OutputInstructionView : public QWidget
{
    Q_OBJECT

public:
    OutputInstructionView(int styleId,QWidget *parent = 0);

    /**
     * @brief updateView　更新设置数据到界面控件上
     */
    void updateView();
    /**
     * @brief getInput　获取界面输入数据
     */
    void getInput();

    void changeLanguage(int language);

    void initialDisplayStyle(int styleId);

private:
    QTranslator translator;

public:
    ProgramView *programView;

    /**
     * @brief outputInstruction　输出指令
     */
    QString outputInstruction;
    /**
     * @brief index　索引号
     */
    QString index;

    /**
     * @brief outputType　输出类型　0:DO    1:AO
     */
    int outputType;

    /**
     * @brief selectDoFlag　DO输出类型标志　1:开关  2:脉冲  3:寄存器
     */
    int selectDoFlag;
    /**
     * @brief doSwitch　开关ON/OFF
     */
    QString doSwitch;
    /**
     * @brief switchType　开关类型　０:ON  1:OFF
     */
    int switchType;
    /**
     * @brief pulseTime　脉冲时间
     */
    float pulseTime;
    /**
     * @brief rIndex　寄存器号码
     */
    QString rIndex;

    /**
     * @brief aoValue　AO值
     */
    float aoValue;

    /**
     * @brief note　指令注释
     */
    QString note;

signals:
    /**
     * @brief selectSwitch　选择开关指令
     */
    void selectSwitch();
    /**
     * @brief selectPulse　选择脉冲指令
     */
    void selectPulse();
    /**
     * @brief selectRegister　选择寄存器指令
     */
    void selectRegister();

    /**
     * @brief clearNote　清除注释
     */
    void clearNote();
    /**
     * @brief finishEditInstruction　完成指令编辑
     */
    void finishEditInstruction();
    /**
     * @brief saveInstruction　保存指令
     * @param outputInstruction　输出指令
     */
    void saveInstruction(QString outputInstruction);
    /**
     * @brief selectDOInstruction　选择DO指令
     */
    void selectDOInstruction();
    /**
     * @brief selectAOInstruction　选择AO指令
     */
    void selectAOInstruction();

private slots:
    /**
     * @brief on_switch_radioButton_clicked　选择开关指令槽函数
     */
    void on_switch_radioButton_clicked();

    /**
     * @brief on_pulse_radioButton_clicked　选择脉冲指令槽函数
     */
    void on_pulse_radioButton_clicked();

    /**
     * @brief on_register_radioButton_clicked　选择寄存器指令槽函数
     */
    void on_register_radioButton_clicked();

    /**
     * @brief on_clearNote_Btn_clicked　清除指令注释槽函数
     */
    void on_clearNote_Btn_clicked();

    /**
     * @brief on_forward_Btn_clicked　上一页槽函数
     */
    void on_forward_Btn_clicked();

    /**
     * @brief on_save_Btn_clicked　保存指令槽函数
     */
    void on_save_Btn_clicked();

    void on_DO_radioButton_clicked();

    void on_AO_radioButton_clicked();

private:
    Ui::OutputInstructionView *ui;
};

#endif // OUTPUTINSTRUCTIONVIEW_H
